Soru & Cevap

ARDUİNO KESME ATMA

15.09.2015 - 10:17

İYİ GÜNLER  EKRAN GÖRÜNTÜSÜ OLARAK EKLEMİŞ BULUNDUĞUM  ARDUİNO ZAMAN KESMESİNDE ANLAMADIĞIM BÖLÜM MAVİ OLARAK SEÇİLMİŞTİR BİRAZ DETAYLI ANLATABİLECEK BİR YETKİLİ KİŞİ VARSA SEVİNİRİM . HESAPLAMA BÖLÜMÜNDE YERİNE KOYACAĞİMİZ DEĞERLERİ PEK BİLMİYORUM ŞİMDİDEN TEŞEKKÜR EDERİM 

13 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user hasbisevinc
hasbisevinc
15.09.2015 - 10:51

hesaplama aşağıdaki resimde

/sites/default/files/cevaplar/dosya/2020/file-frml.png
Profile picture for user hasbisevinc
hasbisevinc
15.09.2015 - 10:45

Merhaba Orkut,

cli(); fonksiyonu bir süreliğine kesmeyi ayar yapman için durdurur. 

TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0; 

bunlar timer için yapman gereken ayarlamalardır. Timer kesmesinin düzgün çalışabilmesi için. bu register'ları daha detaylı tanımak istersen aşağıdaki linki kullanabilirsin:

http://mil.ufl.edu/5666/handouts/avr_pwm_reg_info_summary.pdf

OCR1A değişkeni eğitimde de bahsedilmişti. timer'ın saymaya kaçtan başlayacağını belirlediğimiz yer burası. burada belirttiğin değerden saymaya başlar arduino. 65536 değerine ulaştığı zaman kesmeyi meydana getirir. yani buraya yazdığın değer önemli. timer kesmesinin ne kadar sıklıkla gerçekleşeceğini bu sayı ile belirleyebilirsin

TCCR1B |= (1 << WGM12); ile timerın modunu ayarlıyor

TCCR1B |= (1 << CS12) | (1 << CS10); ile her bir sayma arasında ne kadar süre geçeceğini belirliyor. yani demin bahsettiğimiz OCR1A değişkenindeki sayı artıyordu ya, her bir artma için ne kadar süre geçmesi lazım. örnekteki değer arduino'nun kristalinin 1024'e bölümü olarak ayarlanmış. bu değerler değiştirilerek yine kesme süresi ayarlanabilir. Buraya yazacağın değerler için aşağıdaki tabloyu kullanabilirsin

http://blog.oscarliang.net/ctt/uploads/2013/05/clk_select_16bit.png

TIMSK1 |= (1 << OCIE1A); ile de timer kesmesini aktif yaptık artık

sei(); ile ayarlamalarımız bittiğini ve kesmeleri tekrar çalıştırmak istediğimizi belirtiyoruz.